Code division multiple access (CDMA) techniques have proven useful in a variety of communications applications, including cellular telephones, wireless local area networks, and military communications. CDMA allows a number of users to share a spectral band (e.g. a radio channel). User data is combined with a corresponding spreading code to create a CDMA user signal. The spreading code is usually a pseudorandom sequence of symbols that can be generated by a transmitter, and also generated by a receiver which knows the characteristics of the code. Generally, different users are assigned different spreading codes. Each symbol of the pseudorandom sequence is referred to as a chip. The time duration of a chip is referred to as a chip time, and hence the chip rate (or spreading code frequency) is the reciprocal of the chip time. The chip rate is typically at least an order of magnitude higher than the data rate of the underlying information to be transmitted, although lower ratios are sometimes used.
Multiple CDMA user signals can be transmitted in the same spectral band, for example by summing and transmitting multiple users into a radio channel (e.g. in a cellular base station transmitter), or by multiple CDMA transmitters each transmitting separately into the same radio channel (e.g. multiple cellular handset transmitters tuned to the same radio channel).
The spreading codes are used by receivers to decode particular users. A receiver decoding a particular user will, to a greater or lesser extent depending on the particular codes used, reject the signals from other users. Ideally, the CDMA codes are assigned so that a receiver decoding one user will completely reject other users. Spreading codes providing these properties are known and referred to as orthogonal codes. In practice, non-idealities in the transmitter, receiver, and communication channel (including e.g., multipath, filtering, distortion, and synchronization errors) result in some interference occurring between users even when orthogonal codes are used. Additional interference can also result from the use of non-orthogonal codes. The resulting interference between users is called multi-user interference, and can be further exacerbated when users' signal levels at the receiver are different from each other.
Theoretically optimum performance can be obtained when multi-user interference is present by performing joint detection of all users. Such approaches, however, are computationally complex and assume knowledge of the statistics of the multi-user interference which may be unavailable. Hence, alternate approaches with less computational complexity have been sought.
One sub-optimal approach is known as interference cancellation. Interference cancellation typically proceeds by making initial estimates of the user's data (e.g. using a matched filter receiver). An estimate of the multi-user interference is then obtained by re-spreading these initial data estimates, and for each user, subtracting every other user's re-spread signal. Interference cancellation approaches, although successful, often fail to provide significant performance gains. Interference cancellation is also computationally complex, since much of the processing is performed at the chip rate. Interference cancellation also proves difficult when different user's data timing are not aligned to each other in so-called asynchronous CDMA.